[EventTiming] Improve some of the flaky tests This CL improves crossiframe.html by waiting for the load event (so it knows the iframe is ready), and makes it faster by awaiting for both the main frame and iframe observers at the same time. It also improves the buffered-and-duration test by considering cases in which the first event does actually get buffered due to machine slowness. Bug: 1074048 Change-Id: Ieb356a4a4bbcfca8454e8a76334df70867b4f954 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2343487 Reviewed-by: Yoav Weiss <yoavweiss@chromium.org> Commit-Queue: Nicolás Peña Moreno <npm@chromium.org> Cr-Commit-Position: refs/heads/master@{#796517} 
diff --git a/event-timing/crossiframe.html b/event-timing/crossiframe.html index dfbd289..147e144 100644 --- a/event-timing/crossiframe.html +++ b/event-timing/crossiframe.html 
@@ -43,13 +43,14 @@    assert_less_than(childFrameData.processingStart, childFrameData.clickDone,  "The entry's processing start should be before than the child frame's clickDone."); - assert_greater_than(childFrameData.startTime, childFrameData.clickTimeMin, - "The entry's start time should be later than the child frame's \ - clickTimeMin.");  }    promise_test(async t => {  assert_implements(window.PerformanceEventTiming, "Event Timing is not supported"); + // Wait for load event so we can interact with the iframe. + await new Promise(resolve => { + window.addEventListener('load', resolve); + });  clickTimeMin = performance.now();  let observedMouseDown = false;  const observerPromise = new Promise(resolve => { @@ -66,15 +67,17 @@  resolve();  })).observe({type: 'event'});  }); - await clickAndBlockMain('button'); - clickDone = performance.now(); - await observerPromise; + clickAndBlockMain('button').then(() => { + clickDone = performance.now(); + });  const childFrameEntriesPromise = new Promise(resolve => {  window.addEventListener("message", (event) => { - resolve(event.data); + t.step(() => { + validateChildFrameEntries(event.data); + }); + resolve();  }, false);  }); -  let iframe = document.getElementById('iframe');  const iframeX = document.getElementById('iframe').offsetLeft;  const iframeY = document.getElementById('iframe').offsetTop; @@ -84,10 +87,7 @@  .pointerDown()  .pointerUp()  actions.send(); - const childFrameData = await childFrameEntriesPromise; - t.step(() => { - validateChildFrameEntries(childFrameData); - }); + return Promise.all([observerPromise, childFrameEntriesPromise]);  }, "Event Timing: entries should only be observable by its own frame.");    </script>